Database SQL – Index
SQL Index คือ เครื่องมือค้นหาข้อมูลใน table ที่ช่วยให้ฐานข้อมูล หรือ database สามารถค้นหาข้อมูลได้รวดเร็วกว่าปกติ เพราะ index จะมีฐานข้อมูลที่จะระบุตำแหน่งของข้อมูลที่ต้องการ เปรียบเหมือนสารบัญที่ระบุเลขหน้าของหนังสือที่ค้นหา การนำเอา index มาใช้งานช่วยให้ SQL Select ที่ดึงข้อมูลด้วย Where Clause สามารถทำได้รวดเร็วขึ้น แต่ก็จะทำให้ SQL Update และ SQL Insert ช้าลง เพราะทุกครั้งที่ทำการแก้ไข หรือเพื่อข้อมูล ระบบจำต้องทำการสร้าง index ให้ใหม่ด้วย
การจะสร้าง index ให้กับ table จะใช้คำสั่ง SQL CREATE INDEX statement ซึ่งเราสามารถตั้งชื่อของ index รวมถึงระบุ table และ column ที่จะใช้ทำ index ได้ โดยสามารถกำหนดได้ว่าจะมีคุณสมบัติ unique ด้วยหรือไม่ (UNIQUE constraint) รวมถึงสามารถทำการ index โดยอาศัย column เดียว หรือ หลาย column ก็ได้
คำสั่งสร้าง Index (CREATE INDEX)
SQL Create index statement
CREATE INDEX index_name ON table_name;
การเลือกใช้ SQL index แต่ละแบบ จะขึ้นอยู่กับรูปแบบการใช้งาน SQL Select query statement ว่าส่วนของ Where Clause ส่วนมากใช้งานกับ column ไหน ก็ควรจะต้องทำ index column นั้น หรือถ้ามีการทำเงือนไขหลาย column ร่วมกัน ก็ควรใช้ composite index
1. Index แบบ 1 column (Single-Column Indexes)
CREATE INDEX index_name
ON table_name (column_name);
2. Index แบบไม่ซ้ำ (Unique Indexs)
มีผลต่อประสิทธิภาพในการ query หรือ select ข้อมูลที่รวมเร็ว เพราะข้อมูลจะต้องไม่ซ้ำกัน
CREATE UNIQUE INDEX index_name
on table_name (column_name);
3. Index แบบหลาย column (Composite Indexs)
CREATE INDEX index_name
on table_name (column1, column2);
4. Implicit Indexs
เป็น index ที่ถูกสร้างขึ้นมาอัตโนมัติตั้งแต่เริ่มสร้าง table เช่น ถ้ามีการกำหนด Primary Key constraint หรือ Unique Constraint
คำสั่งลบ Index (DROP INDEX)
DROP INDEX index_name;
คำเตือน – การ drop index อาจจะทำให้ performance ของการ select บางคำสั่งช้าลงอย่างมาก เพราะฉะนั้นต้องตรวจสอบให้แน่ใจก่อนทำการ drop
ข้อควรระวังการใช้ Index
ถึงแม้ว่าการทำ index จะช่วยเพิ่มประสิทธิภาพของฐานข้อมูล หรือ database แต่สถานการณ์การทำ index ก็ไม่มีผลดีเสมอไปเช่น
- Index ไม่ควรทำใน table ที่มีข้อมูลน้อย
- Table ที่มีการทำ insert หรือ update บ่อยๆ ด้วยข้อมูลจำนวนมาก
- Index ไม่ควรทำกับ column ที่มีค่า NULL จำนวนมากใน column
- Column ที่มีการปรับเปลี่ยนโครงสร้างบ่อยๆ ไม่ควรทำ index
Reference:
รวมคำสั่ง SQL Command พื้นฐานเบื้องต้น
Author: Suphakit Annoppornchai
Credit: https://saixiii.com, https://www.tutorialspoint.com